package com.sx.utils;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;

/**
 * 日期工具类
 */
public class DateUtils {
    /**
     * 默认时区
     */
    private static final ZoneId DEFAULT_ZONE = ZoneId.of("Asia/Shanghai");

    /**
     * 时间戳转 LocalDateTime（默认时区）
     * @param timestamp 毫秒时间戳
     */
    public static LocalDateTime toLocalDateTimeWithMilli(long timestamp) {
        return Instant.ofEpochMilli(timestamp)
                .atZone(DEFAULT_ZONE)
                .toLocalDateTime();
    }

    /**
     * 时间戳转 LocalDateTime（默认时区）
     * @param timestamp 秒时间戳
     */
    public static LocalDateTime toLocalDateTime(long timestamp) {
        return Instant.ofEpochSecond(timestamp)
                .atZone(DEFAULT_ZONE)
                .toLocalDateTime();
    }

    /**
     * LocalDateTime 转时间戳（默认时区）
     * @param dateTime 日期时间对象
     */
    public static long toTimestamp(LocalDateTime dateTime) {
        assert dateTime != null;
        return dateTime.atZone(DEFAULT_ZONE).toInstant().toEpochMilli();
    }
}
